from typing import Optional
from pydantic import BaseModel

class Token(BaseModel):
    '''
    令牌模型
    '''
    access_token: str
    token_type: str


class TokenData(BaseModel):
    '''
    已解码的令牌模型
    '''
    username: Optional[str] = None


class User(BaseModel):
    '''
    继承数据模型类，构造用户模型
    '''
    username: str
    email: Optional[str] = None
    full_name: Optional[str] = None
    disable: Optional[bool] = None


class UserInDB(User):
    '''
    具有密码哈希值属性的用户类。

    UserInDB(**user_dict) 表示：
    直接将 user_dict 的键和值作为关键字参数传递。

    '''
    hashed_password: str